home *** CD-ROM | disk | FTP | other *** search
- #!plserver -f
- # Maurice LeBrun -*-tcl-*-
- # 30 Jun 1994
- #
- # @> A script illustrating multiple toplevel plframes.
- #
- # $Id: tk03,v 1.3 1994/07/27 17:45:09 furnish Exp $
- #
- # $Log: tk03,v $
- # Revision 1.3 1994/07/27 17:45:09 furnish
- # Elucidate bug in plframe destruction mechanism.
- #
- # Revision 1.2 1994/07/24 07:42:59 mjl
- # Eliminated "destroy ." in favor of "exit".
- #
- # Revision 1.1 1994/07/01 20:44:23 mjl
- # Added to illustrate multiple toplevels containing plframes.
- #
- ###############################################################################
-
- wm title . "tk03"
- plstdwin .
-
- ###############################################################################
- # Set up the menubar and message widgets.
-
- frame .menu -relief raised -borderwidth 3
-
- button .menu.one -text "One" -command "1 .plw.plwin"
- pack append .menu .menu.one {left expand fill}
-
- button .menu.two -text "Two" -command "2 .plw.plwin"
- pack append .menu .menu.two {left expand fill}
-
- button .menu.exit -text "Exit" -command "destroy ."
-
- #"quit 0"
-
- pack append .menu .menu.exit {right expand fill}
-
- message .msg \
- -font -Adobe-helvetica-medium-r-normal--*-240* -aspect 200 \
- -width 500 -borderwidth 1 \
- -text "TK03: Multiple toplevels with plframes"
-
- pack append . \
- .menu {top fillx} \
- .msg {top padx 5 pady 5 fill}
-
- tk_menuBar .menu .menu.one .menu.two .menu.exit
-
- ###############################################################################
- #
- # This creates the plframe "megawidget". If you just want a bare plframe,
- # change "plxframe" to "plframe".
-
- plxframe .plw
- pack append . .plw {left expand fill}
-
- ###############################################################################
- # Set up the second toplevel
-
- toplevel .1
- plstdwin .1
-
- ###############################################################################
- # Set up the second menubar and message widgets.
-
- frame .1.menu -relief raised -borderwidth 3
-
- button .1.menu.three -text "Three" -command "plot2 .1.plw.plwin"
- pack append .1.menu .1.menu.three {left expand fill}
-
- button .1.menu.four -text "Four" -command "plot3 .1.plw.plwin"
- pack append .1.menu .1.menu.four {left expand fill}
-
- button .1.menu.exit -text "Exit" -command "destroy .1"
- pack append .1.menu .1.menu.exit {right expand fill}
-
- message .1.msg \
- -font -Adobe-helvetica-medium-r-normal--*-240* -aspect 200 \
- -width 500 -borderwidth 1 \
- -text "TK03: Multiple toplevels with plframes"
-
- pack append .1 \
- .1.menu {top fillx} \
- .1.msg {top padx 5 pady 5 fill}
-
- tk_menuBar .1.menu .1.menu.three .1.menu.four
-
- ###############################################################################
- #
- # This creates the plframe "megawidget". If you just want a bare plframe,
- # change "plxframe" to "plframe".
-
- plxframe .1.plw
- pack append .1 .1.plw {left expand fill}
-
- ###############################################################################
- # Definitions of procedures used in this script.
-
- # Punch eject and hold onto your seat !!!
-
- proc quit a {
- exit
- }
-
- # Utility routine.
-
- proc dpos w {
- wm geometry $w +300+300
- }
-
- proc 1 {w} {
- global xscale yscale xoff yoff
-
- set xscale 6.0
- set yscale 1.0
- set xoff 0.0
- set yoff 0.0
-
- plot1 $w
- }
-
- proc 2 {w} {
- global xscale yscale xoff yoff
-
- set xscale 1.0
- set yscale 0.0014
- set xoff 0.0
- set yoff 0.0185
-
- $w cmd plsyax 5
-
- plot1 $w
- }
-
- # This is supposed to work just like the plot1() in x01c.c
-
- proc plot1 {w} {
- global xscale yscale xoff yoff
-
- set npts 60
- matrix x f $npts
- matrix y f $npts
-
- for {set i 0} {$i < $npts} {incr i} {
- $x $i = [expr $xoff + $xscale * ($i + 1) / $npts]
- $y $i = [expr $yoff + $yscale * pow([$x $i],2)]
- }
-
- set xmax [$x [expr $npts-1]]
- set ymax [$y [expr $npts-1]]
-
- matrix x1 f 6
- matrix y1 f 6
-
- for {set i 0} {$i < 6} {incr i} {
- set j [expr $i*10+3]
- $x1 $i = [$x $j]
- $y1 $i = [$y $j]
- }
-
- $w cmd plcol 1
- $w cmd plenv $xoff $xmax $yoff $ymax 0 0
- $w cmd plcol 6
- $w cmd pllab "(x)" "(y)" "#frPLplot Example 1 - y=x#u2"
-
- # plot the data points
-
- $w cmd plcol 9
- $w cmd plpoin 6 $x1 $y1 9
-
- # draw the line through the data
-
- $w cmd plcol 4
- $w cmd plline $npts $x $y
- }
-
- # This is supposed to work just like the plot2() in x01c.c
-
- proc plot2 {w} {
- $w cmd plcol 1
- $w cmd plenv -2 10 -.4 1.2 0 1
- $w cmd plcol 2
- $w cmd pllab "(x)" "sin(x)/x" "#frPLplot Example 1 - Sinc Function"
-
- # Fill up the array
-
- matrix x1 f 101
- matrix y1 f 101
-
- for {set i 0} {$i < 101} {incr i} {
- set x [expr ($i - 19.)/6.]
- $x1 $i = $x
- $y1 $i = 1
- if {$x != 0} { $y1 $i = [expr sin($x)/$x] }
- }
-
- $w cmd plcol 3
- $w cmd plline 101 $x1 $y1
- }
-
- # This is supposed to work just like the plot3() in x01c.c
-
- proc plot3 {w} {
-
- $w cmd pladv
- $w cmd plvsta
- $w cmd plwind 0.0 360.0 -1.2 1.2
-
- # Draw a box with ticks spaced 60 degrees apart in X, and 0.2 in Y.
-
- $w cmd plcol 1
- $w cmd plbox "bcnst" 60.0 2 "bcnstv" 0.2 2
-
- # Superimpose a dashed line grid, with 1.5 mm marks and spaces.
- # plstyl expects two integer matrices for mark and space!
-
- matrix mark i 1
- matrix space i 1
-
- $mark 0 = 1500
- $space 0 = 1500
- $w cmd plstyl 1 $mark $space
-
- $w cmd plcol 2
- $w cmd plbox "g" 30.0 0 "g" 0.2 0
-
- $mark 0 = 0
- $space 0 = 0
- $w cmd plstyl 0 $mark $space
-
- $w cmd plcol 3
- $w cmd pllab "Angle (degrees)" "sine" "#frPLplot Example 1 - Sine function"
-
- matrix x f 101
- matrix y f 101
-
- for {set i 0} {$i < 101} {incr i} {
- $x $i = [expr 3.6 * $i]
- $y $i = [expr sin([$x $i] * 3.141592654 / 180.0)]
- }
-
- $w cmd plcol 4
- $w cmd plline 101 $x $y
- }
-
- ###############################################################################
-